<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        var a = 100;

        function fn() {
            console.log(a); //undefined
            var a = 10;
            return this.a;
        }
        console.log(fn()); //100
        // 第一次弹 undefined， 第二次弹 100
        // 考察点： 变量提升和 this 指向
        // 可以将题目的代码简单理解成
        // 1、 声明一个变量 a 和函数 fn
        // 2、 执行代码 alert(fn());
        // 先执行函数 fn， 存在变量提升， 所以弹出 undefined，
        // return this.a， fn()， 相当于 fn.call(undefined)， this 指向 window， 所以弹出 window.a， 也就是弹出 100
    </script>
</body>

</html>